<template>
  <div class="container">
    <div class="login-box">
      <h2>Vol平台实时监控系统</h2>
      <form>
        <div class="user-box">
          <input type="text" required v-model="user.username" @keyup.enter="login" />
          <label>Username</label>
        </div>
        <div class="user-box">
          <input type="password" required v-model="user.password" @keyup.enter="login" />
          <label>Password</label>
        </div>
        <div class="a" @click="login">
          <span></span>
          <span></span>
          <span></span>
          <span></span>
          Submit
        </div>
        <div class="a" @click="cancel">
          <span></span>
          <span></span>
          <span></span>
          <span></span>
          Cancel
        </div>
      </form>
    </div>
  </div>
</template>
<script setup>

// 导入请求对象
import axios, { setToken } from "../utils/request";
// 导入组合式api
import { reactive,getCurrentInstance } from "vue";
import { useRouter } from "vue-router";
const {
  appContext: {
    config: {
      globalProperties: { $message },
    },
  },
} = getCurrentInstance();
// 创建路由对象
let router = useRouter();
let user = reactive({
  username: "",
  password: "",
});
// 登录方法
let login = async () => {
  let { data } = await axios.get("login", {
    params: user,
  });
  if (data.success) {
    // 设置token，
    // 登录成功，token保存到请求对象的请求头
    setToken(data.token);
    // 将token保存到浏览器缓存中
    // sessionStorage关闭浏览器就会清空
    sessionStorage.setItem("token", data.token);
    $message({
        message: "登录成功！",
        type: "success",
      });
    router.push("/index");
  } else {
    $message({
        message: "登录失败！",
        type: "success",
      });
  }
  // axios.get('seller').then(({data})=>{
  //   console.log(data);
  // })
};
// 取消方法
let cancel = () => {
  (user.username = ""), (user.password = "");
};
</script>
<style scoped lang="scss">
* {
  margin: 0;
  padding: 0;
  list-style: none;
  text-decoration: none;
  box-sizing: border-box;
  outline: none;
}

.container {
  width: 100vw;
  height: 100vh;
  background: linear-gradient(#141e30, #243b55);
}

.login-box {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 400px;
  padding: 40px;
  transform: translate(-50%, -50%);
  background: rgba(0, 0, 0, 0.5);
  box-sizing: border-box;
  box-shadow: 0 15px 25px rgba(0, 0, 0, 0.6);
  border-radius: 10px;
}

.login-box h2 {
  margin: 0 0 30px;
  padding: 0;
  color: #fff;
  text-align: center;
}

.login-box .user-box {
  position: relative;
}

canvas {
  position: absolute;
  top: 0;
  left: 0;
  background: rgba(black, 0.3);
}

.login-box .user-box input {
  width: 100%;
  padding: 10px 0;
  font-size: 16px;
  color: #fff;
  margin-bottom: 30px;
  border: none;
  border-bottom: 1px solid #fff;
  outline: none;
  background: transparent;
}

.login-box .user-box label {
  position: absolute;
  top: 0;
  left: 0;
  padding: 10px 0;
  font-size: 16px;
  color: #fff;
  pointer-events: none;
  transition: 0.5s;
}

.login-box .user-box input:focus~label,
.login-box .user-box input:valid~label {
  top: -20px;
  left: 0;
  color: #03e9f4;
  font-size: 12px;
}

.login-box form .a {
  position: relative;
  display: inline-block;
  padding: 10px 20px;
  color: #03e9f4;
  font-size: 16px;
  text-decoration: none;
  text-transform: uppercase;
  overflow: hidden;
  transition: 0.5s;
  margin-top: 40px;
  letter-spacing: 4px;
  display: flex;
  justify-content: space-between;
}

.login-box .a:hover {
  background: #03e9f4;
  color: #fff;
  border-radius: 5px;
  box-shadow: 0 0 5px #03e9f4, 0 0 25px #03e9f4, 0 0 50px #03e9f4,
    0 0 100px #03e9f4;
}

.login-box .a span {
  position: absolute;
  display: block;
}

.login-box .a span:nth-child(1) {
  top: 0;
  left: -100%;
  width: 100%;
  height: 2px;
  background: linear-gradient(90deg, transparent, #03e9f4);
  animation: btn-anim1 1s linear infinite;
}

@keyframes btn-anim1 {
  0% {
    left: -100%;
  }

  50%,
  100% {
    left: 100%;
  }
}

.login-box .a span:nth-child(2) {
  top: -100%;
  right: 0;
  width: 2px;
  height: 100%;
  background: linear-gradient(180deg, transparent, #03e9f4);
  animation: btn-anim2 1s linear infinite;
  animation-delay: 0.25s;
}

@keyframes btn-anim2 {
  0% {
    top: -100%;
  }

  50%,
  100% {
    top: 100%;
  }
}

.login-box .a span:nth-child(3) {
  bottom: 0;
  right: -100%;
  width: 100%;
  height: 2px;
  background: linear-gradient(270deg, transparent, #03e9f4);
  animation: btn-anim3 1s linear infinite;
  animation-delay: 0.5s;
}

@keyframes btn-anim3 {
  0% {
    right: -100%;
  }

  50%,
  100% {
    right: 100%;
  }
}

.login-box .a span:nth-child(4) {
  bottom: -100%;
  left: 0;
  width: 2px;
  height: 100%;
  background: linear-gradient(360deg, transparent, #03e9f4);
  animation: btn-anim4 1s linear infinite;
  animation-delay: 0.75s;
}

@keyframes btn-anim4 {
  0% {
    bottom: -100%;
  }

  50%,
  100% {
    bottom: 100%;
  }
}
</style>
  